0X01 Miracl 是什么

MIRACL(Multiprecision Integer and Rational Arithmetic C/c++ Library)是一套由Shamus Software Ltd.所开发的一套关于大数运算函数库,用来设计与大数运算相关的密码学之应用,包含了RSA 公开密码学、Diffie-Hellman密钥交换(Key Exchange)、AES、DSA数字签名,还包含较新的椭圆曲线密码学(Elliptic Curve Cryptography)等等。运算速度快,并提供源代码。国外著名密码学函数库还有:GMP、NTL、Crypto++、LibTomCrypt(LibTomMath)、OpenSSL等。

(1)这是我找到的一些关于这个库的文档:

链接:https://pan.baidu.com/s/1WDXIeI3ajAclHQB42Kzbxg 提取码:5sjp

(2)这是这个库的 github 项目

https://github.com/miracl/MIRACL

0X02 编译

由于 ubuntu 在编译方面相对于 centos 方便一些,于是我这里以 ubuntu 进行说明

1.下载并解压 GitHub 的 Miracl zip

下载下 MIRACL-master.zip 文件以后,我们需要新建一个 miracl 文件夹

mkdir miracl

将 zip 文件拷贝到 miracl 中以后,使用下面的命令进行解压

unzip -j -aa -L MIRACL*.zip

2.开始编译

在 miracl 目录下运行 linux64 这个脚本

bash linux64

等待一会就编译结束了,执行下面这条命令测试一下是否编译成功,如果正常运行就是编译成功了

./pk-demo

3.将 *.h 拷贝

Linux 要想引用头文件我们需要将我们的自己的库的 .h 文件都放到 linux 的 /usr/include 中,为了区分各种的库,我在 /usr/include 创建一个 miracl 文件夹

cp ./miracl/*.h /usr/include/miracl

4.将 miracl.a 文件移动并重命名

我们需要在链接的时候用到这个库,我们就要把这个静态链接库文件放在 /usr/lib 下,并命名为 libxxxx.a

cp ./miracl/miracl.a /usr/lib/libmiracl.a

5.修改头文件

因为我刚刚在 include 目录下创建了一个 miracl 文件夹,于是我们引用头文件的时候也要带上

#include<miracl/miracl.h>
#include<miracl/mirdef.h>

6.使用 gcc 编译 c 文件

gcc sm3.c -o sm3 -lmiracl

0X03 补充

如果有人对这个 gcc 编译,包括 静态动态链接不是很清楚的话,可以看一下这本书的 3.3.1 节,我觉得写得非常好,也是别人推荐给我的

链接:https://pan.baidu.com/s/1PWLxrT8VtmD5MKSCU-3WhQ 提取码:bq6v